package com.ruoyi.system.service;

import java.util.List;

import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.system.domain.Appmanager;
import org.apache.ibatis.annotations.Param;

/**
 * 项目信息Service接口
 * 
 * @author yaozh
 * @date 2024-01-09
 */
public interface IAppmanagerService 
{
    /**
     * 查询项目信息
     * 
     * @param appid 项目信息主键
     * @return 项目信息
     */
    public Appmanager selectAppmanagerByAppid(Long appid);

    /**
     * 查询项目信息列表
     * 
     * @param appmanager 项目信息
     * @return 项目信息集合
     */
    public List<Appmanager> selectAppmanagerList(Appmanager appmanager);

    public List<Appmanager> selectAppManagerListByUserAndDbName(LoginUser user,String dbName);

    public List<Appmanager> selectAppManagerListByUser(LoginUser user);

    /**
     * 新增项目信息
     * 
     * @param appmanager 项目信息
     * @return 结果
     */
    public int insertAppmanager(Appmanager appmanager);

    /**
     * 修改项目信息
     * 
     * @param appmanager 项目信息
     * @return 结果
     */
    public int updateAppmanager(Appmanager appmanager);

    /**
     * 批量删除项目信息
     * 
     * @param appids 需要删除的项目信息主键集合
     * @return 结果
     */
    public int deleteAppmanagerByAppids(Long[] appids);

    /**
     * 批量更新项目状态信息
     *
     * @param appIds 需要更新状态的项目信息主键
     * @return 结果
     */
    public int updateAppManagerStatusByAppIds(Long[] appIds,String state,String runStatus);

    /**
     * 删除项目信息信息
     * 
     * @param appid 项目信息主键
     * @return 结果
     */
    public int deleteAppmanagerByAppid(Long appid);

    /**
     * 更新项目状态信息
     *
     * @param appId 需要更新状态的项目信息主键
     * @return 结果
     */
    public int updateAppManagerStatusByAppId(Long appId,String state,String runStatus);

    public boolean checkAppExplainUnique(Appmanager appmanager);

    public boolean checkAppNameUnique(Appmanager appmanager);

    public int initAppManager(Appmanager appmanager);

    public int checkDataBaseUnique(String dbName);

    public int updateAppUserGroup(Long userId, Long appId, Integer control);
    public int insertAppUserGroup(Long userId, Long appId, Integer control);

    public int selectAppUserGroupByAppId(Long userId, Long appId);

    public int deleteAppUserGroupByAppId(Long[] userIds);
}
